/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.upn.sigemfi.rec.bc;

import edu.upn.sigemfi.rec.be.AccionCobranza;
import edu.upn.sigemfi.rec.be.AccionJudicial;
import edu.upn.sigemfi.rec.be.AccionPrejudicial;
import edu.upn.sigemfi.rec.be.Adjudicacion;
import edu.upn.sigemfi.rec.be.CargoComision;
import edu.upn.sigemfi.rec.be.ComprobacionCliente;
import edu.upn.sigemfi.rec.be.CompromisoPago;
import edu.upn.sigemfi.rec.be.Condonacion;
import edu.upn.sigemfi.rec.be.Notificacion;
import edu.upn.sigemfi.rec.be.ProcesoCobranza;
import edu.upn.sigemfi.rec.be.ProposicionCastigo;
import edu.upn.sigemfi.rec.be.Refinanciamiento;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author Diego
 */
@Stateless
public class ProcesoCobranzaFacade implements ProcesoCobranzaFacadeLocal {

    @PersistenceContext
    private EntityManager em;

    @Override
    public void create(ProcesoCobranza procesoCobranza) {
        em.persist(procesoCobranza);
    }

    @Override
    public void edit(ProcesoCobranza procesoCobranza) {
        em.merge(procesoCobranza);
    }

    @Override
    public void remove(ProcesoCobranza procesoCobranza) {
        em.remove(em.merge(procesoCobranza));
    }

    @Override
    public void createAdjudicacion(Adjudicacion adj) {
        em.persist(adj);
    }

    @Override
    public void editAdjudicacion(Adjudicacion adj) {
        em.merge(adj);
    }

    @Override
    public void removeAdjudicacion(Adjudicacion adj) {
        em.remove(em.merge(adj));
    }
    
            
    @Override
    public ProcesoCobranza find(Object id) {
        return em.find(ProcesoCobranza.class, id);
    }

    @Override
    public List<ProcesoCobranza> findAll() {
        return em.createQuery("select object(o) from ProcesoCobranza as o").getResultList();
    }

    @Override
    public List<AccionCobranza> findAllCobranzas() {
        return em.createQuery("select object(o) from AccionCobranza as o").getResultList();
    }

    @Override
    public List<AccionJudicial> findAllJudiciales() {
        return em.createQuery("select object(o) from AccionJudicial as o").getResultList();
    }

    @Override
    public List<AccionPrejudicial> findAllPrejudiciales() {
        return em.createQuery("select object(o) from AccionPrejudicial as o").getResultList();
    }

    @Override
    public List<Adjudicacion> findAllAdjudicaciones() {
        return em.createQuery("select object(o) from Adjudicacion as o").getResultList();
    }

    @Override
    public List<CompromisoPago> findAllCompromisos() {
        return em.createQuery("select object(o) from CompromisoPago as o").getResultList();
    }

    @Override
    public List<Condonacion> findAllCondonaciones() {
        return em.createQuery("select object(o) from Condonacion as o").getResultList();
    }

    @Override
    public List<ProposicionCastigo> findAllProposicionCastigos() {
        return em.createQuery("select object(o) from ProposicionCastigo as o").getResultList();
    }

    @Override
    public List<Refinanciamiento> findAllRefinanciamientos() {
        return em.createQuery("select object(o) from Refinanciamiento as o").getResultList();
    }

    @Override
    public List<ComprobacionCliente> findAllComprobaciones() {
        return em.createQuery("select object(o) from ComprobacionCliente as o").getResultList();
    }

    @Override
    public List<Notificacion> findAllNotificaciones() {
        return em.createQuery("select object(o) from Notificacion as o").getResultList();
    }

    @Override
    public List<CargoComision> findAllCargosComision() {
        return em.createQuery("select object(o) from CargoComision as o").getResultList();
    }
    @Override
    public List<ProposicionCastigo> findAllProposicionCastigoPorCredito(Long credito) {
        return em.createQuery("Select object(o) from ProposicionCastigo o Where o.fidRecCredito.idCredito = ?1").setParameter(1, credito).getResultList();
    }
    @Override
    public List<Adjudicacion> findAllAdjudicacionesPorCredito(Long credito) {
        return em.createQuery("Select object(o) from Adjudicacion o Where o.fidRecCredito.idCredito = ?1").setParameter(1, credito).getResultList();
    }

    @Override
    public List<ComprobacionCliente> findAllComprobacionesPorCredito(Long credito) {
        return em.createQuery("Select object(o) from ComprobacionCliente o Where o.fidRecCredito.idCredito = ?1").setParameter(1, credito).getResultList();
    }

    @Override
    public List<Notificacion> findAllNotificacionesPorCredito(Long credito) {
        return em.createQuery("Select object(o) from Notificacion o Where o.fidRecCredito.idCredito = ?1").setParameter(1, credito).getResultList();
    }

    @Override
    public List<AccionCobranza> findAllAccionesCobranzaPorEstado(Long credito, String estado) {
        return em.createQuery("Select object(o) from AccionCobranza o Where o.fidRecCredito.idCredito = ?1 AND o.realizado = '"+estado+"'").setParameter(1, credito).getResultList();
    }

    @Override
    public List<CompromisoPago> findAllCompromisoPagoPorCredito(Long credito) {
        return em.createQuery("Select object(o) from CompromisoPago o Where o.fidRecCredito.idCredito = ?1").setParameter(1, credito).getResultList();
    }

    @Override
    public CargoComision findCargoComision(Object id) {
        return em.find(CargoComision.class, id);
    }

    @Override
    public Notificacion findNotificacion(Object id) {
        return em.find(Notificacion.class, id);
    }

    @Override
    public ComprobacionCliente findComprobacion(Object id) {
        return em.find(ComprobacionCliente.class, id);
    }

    @Override
    public AccionCobranza findCobranza(Object id) {
        return em.find(AccionCobranza.class, id);
    }

    @Override
    public AccionJudicial findJudicial(Object id) {
        return em.find(AccionJudicial.class, id);
    }

    @Override
    public AccionPrejudicial findPrejudicial(Object id) {
        return em.find(AccionPrejudicial.class, id);
    }

    @Override
    public Adjudicacion findAdjudicacion(Object id) {
        return em.find(Adjudicacion.class, id);
    }

    @Override
    public CompromisoPago findCompromisoPago(Object id) {
        return em.find(CompromisoPago.class, id);
    }

    @Override
    public Condonacion findCondonacion(Object id) {
        return em.find(Condonacion.class, id);
    }

    @Override
    public ProposicionCastigo findProposicionCastigo(Object id) {
        return em.find(ProposicionCastigo.class, id);
    }

    @Override
    public Refinanciamiento findRefinanciamiento(Object id) {
        return em.find(Refinanciamiento.class, id);
    }
}
